Social login হল এমন একটি পদ্ধতি যেখানে ব্যবহারকারীরা তাদের সোশ্যাল মিডিয়া অ্যাকাউন্ট (যেমন Google, Facebook, Twitter ইত্যাদি) ব্যবহার করে লগইন করতে পারেন। Spring Security-তে Social login কনফিগার করার জন্য আমরা সাধারণত Spring Social অথবা Spring Security OAuth লাইব্রেরি ব্যবহার করি। তবে, Spring Boot অ্যাপ্লিকেশনে সহজে Social login ইন্টিগ্রেট করতে আমরা Spring Security OAuth2 বা Spring Security 5+ এর OAuth2 Login ফিচার ব্যবহার করতে পারি।
এখানে আমরা Google এর সোশ্যাল লগইন কনফিগার করার উদাহরণ দেখব।
ধাপ ১: ডিপেনডেন্সি যোগ করুন
আপনার pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
এটি OAuth2 Login এবং থাইমিলিফ (Thymeleaf) ইন্টিগ্রেট করবে, যা আমাদের Social login ইন্টারফেস তৈরি করতে সহায়ক হবে।
ধাপ ২: application.properties কনফিগার করুন
আপনি Google এর OAuth ক্লায়েন্ট কনফিগার করার জন্য application.properties ফাইলে নিচের তথ্য যোগ করুন। এই তথ্যগুলি Google Developer Console থেকে পাবেন।
spring.security.oauth2.client.registration.google.client-id=YOUR_GOOGLE_CLIENT_ID
spring.security.oauth2.client.registration.google.client-secret=YOUR_GOOGLE_CLIENT_SECRET
spring.security.oauth2.client.registration.google.scope=profile,email
spring.security.oauth2.client.registration.google.redirect-uri={baseUrl}/login/oauth2/code/{registrationId}
spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/auth
spring.security.oauth2.client.provider.google.token-uri=https://oauth2.googleapis.com/token
spring.security.oauth2.client.provider.google.user-info-uri=https://www.googleapis.com/oauth2/v3/userinfo
- client-id এবং client-secret আপনি Google Developer Console থেকে তৈরি করতে পারবেন।
- redirect-uri হল লগইন পরবর্তী URL যেখানে ব্যবহারকারী যাবে।
ধাপ ৩: Spring Security কনফিগারেশন
Spring Security তে OAuth2 Login কনফিগার করার জন্য SecurityFilterChain এবং OAuth2LoginAuthenticationFilter ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো।
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login**", "/oauth2/**").permitAll() // Allow public access to login and oauth2 URL
.anyRequest().authenticated() // All other requests must be authenticated
.and()
.oauth2Login()
.loginPage("/login"); // Custom login page if you want
return http.build();
}
}
এটি নিশ্চিত করবে যে /login এবং /oauth2/** URL গুলি পাবলিক অ্যাক্সেসযোগ্য, এবং অন্যান্য URL গুলোর জন্য অথেন্টিকেশন প্রয়োজন।
ধাপ ৪: Custom Login Page তৈরি করুন (Optional)
আপনার যদি কাস্টম লগইন পেজ থাকে, তবে login.html তৈরি করতে পারেন। নিচে একটি সহজ উদাহরণ:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<a href="/oauth2/authorization/google">Login with Google</a>
</body>
</html>
এখানে, যখন ব্যবহারকারী Login with Google লিঙ্কে ক্লিক করবে, তখন তারা Google-এ রিডিরেক্ট হবে এবং লগইন প্রক্রিয়া সম্পন্ন করবে।
ধাপ ৫: Controller তৈরি করুন
আপনি ব্যবহারকারীর লগইন তথ্য সংগ্রহ করতে একটি Controller তৈরি করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো:
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class LoginController {
@GetMapping("/login")
public String login() {
return "login"; // Return login page
}
@GetMapping("/home")
public String home(Authentication authentication) {
// Get the authenticated user details
String userName = authentication.getName();
System.out.println("User Name: " + userName);
return "home"; // Home page after login
}
}
এখানে, যখন ব্যবহারকারী সঠিকভাবে লগইন করবেন, তারা /home URL-এ রিডিরেক্ট হবে।
ধাপ ৬: Home Page তৈরি করুন (Optional)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Home</title>
</head>
<body>
<h1>Welcome</h1>
<p>You are logged in as: <span th:text="${authentication.name}"></span></p>
<a href="/logout">Logout</a>
</body>
</html>
ধাপ ৭: Google Developer Console কনফিগারেশন
Google Developer Console-এ আপনার অ্যাপ্লিকেশনের জন্য একটি OAuth 2.0 Client ID এবং Client Secret তৈরি করুন:
- Google Developer Console-এ প্রবেশ করুন.
- একটি নতুন প্রোজেক্ট তৈরি করুন (যদি প্রয়োজন হয়)।
APIs & Services > Credentialsএ যান এবং একটি নতুন OAuth 2.0 Client ID তৈরি করুন।- Authorized redirect URIs এ আপনার redirect URL দিন (যেমন
http://localhost:8080/login/oauth2/code/google)। - Client ID এবং Client Secret কপি করুন এবং
application.properties-এ পেস্ট করুন।
ধাপ ৮: প্রজেক্ট চালু করুন
এখন আপনার প্রজেক্ট চালু করুন এবং ব্রাউজারে গিয়ে Google এর মাধ্যমে লগইন করুন:
mvn spring-boot:run
এখন আপনি Google Social Login ব্যবহার করে আপনার অ্যাপ্লিকেশনে লগইন করতে পারবেন।
উপসংহার
Spring Security-তে Social Login কনফিগার করার মাধ্যমে আপনি ব্যবহারকারীদের তাদের সোশ্যাল মিডিয়া অ্যাকাউন্ট (যেমন Google) ব্যবহার করে সহজে লগইন করতে সক্ষম করতে পারেন। এই প্রক্রিয়ার মধ্যে Spring Security OAuth2 ক্লায়েন্ট কনফিগারেশন ব্যবহার করা হয়, যা Spring Boot অ্যাপ্লিকেশনে খুব সহজে ইন্টিগ্রেট করা যায়।
Read more